<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /* 
            构造函数注意事项 

            1. 首字母大写 大驼峰 
            2. 构造函数中不能写return  
                1. return 一个基本数据类型  写了也白写 
                2. return 一个复杂数据类型   构造白写

            3. 构造函数  必须跟new 关键字一起用  
                1. 如果不跟new 关键字  就是个普通的函数  
                2. 跟new 一起用 才能发挥构造函数的作用 自动创建 并且返回对象


            4. 构造函数中的this 执行谁  

                每次会返回一个新的对象  this 指向这个 调用自创创建的对象 

                我们称呼这个 自动创建出来的对象  叫 实例对象 
                创建新对象的过程 叫做实例化  

            复习 this 

            1. 普通函数  this -> window
            2. 对象中的函数  this -> 对象本身 
            3. 事件处理函数  this -> 事件源 
            4. 定时器中的函数 this ->window
            5. 箭头函数  父作用域this是谁  就指向谁  
            6. 构造函数 this -> 自动创建出来的实例化对象 
        
        
        
        */


        function fn1(a,b){
            const res = a+b;
            return res;
        }
        // 上面 函数名 全小写   返回一个数据类型  所以是个普通函数  


        function Fn1(a,b){
            this.a = a 
            this.b = b
        }


       var obj1 =  new Fn1(10,20);
       var obj2 =  new Fn1(30,40);
       var obj3 =  new Fn1(50,60);

       console.log(obj1,obj2,obj3);

       


    </script>
</body>
</html>